package eventGenerators;

import java.util.ArrayList;

import eventManager.IEventListener;

import utilities.Key;

/**
 * Interface for all EventGenerator-derived classes.  EventGenerators are added to a model's controller as
 * IEventResponse-compliant objects.  They can be sent events to modify their parameters, enable, disable, etc.
 * 
 * Each EventGenerator has a particular target that it generates events for (the key of the object controller that
 * it resides in).  When an event is triggered, it broadcasts it with event-specific information plus the key of 
 * its target.  An EventProcessor will listen for and pick up the event and use the target key to acquire necessary 
 * information from the target and its surrounding environs through relational lookup tables.  Event-specific information
 * will be used with target-information to perform any necessary calculations or take actions.  Targets are informed
 * of actions as necessary by the processor.  GameEvents are generated and placed on the targets as necessary to mark
 * the occurence of the event for game history.
 * @author rmeyers
 *
 */

public interface IEventGenerator extends IEventListener {
	
	public void enable();
	public void disable();
	public void reset();
	
	public void setTarget(Key targetKey); //Key of the object that the generator affects.
	
}
